/*!
\copyright  Copyright (c) 2023 Qualcomm Technologies International, Ltd.\n
            All Rights Reserved.\n
            Qualcomm Technologies International, Ltd. Confidential and Proprietary.
\file
\defgroup   hfp_profile
\ingroup    profiles
\brief      The sending of events from the hfp profile using the Event Bus
*/

#ifndef HFP_PROFILE_EVENT_SEND_H_
#define HFP_PROFILE_EVENT_SEND_H_

#include "hfp_profile.h"

/*! @{ */

/*! \brief Send the event to indicate HFP has connected.

    \param instance The HFP Instance.
    \param hfg_supported_features The HF Gateway supported features, if known.
*/
void HfpProfile_EventSendHfpConnected(hfpInstanceTaskData *instance, uint32 hfg_supported_features);

/*! \brief Send the event to indicate HFP has disconnected.

    \param instance The HFP Instance.
*/
void HfpProfile_EventSendHfpDisconnected(hfpInstanceTaskData *instance);

/*! \brief Send the event to indicate HFP audio has connected.

    \param instance The HFP Instance.
*/
void HfpProfile_EventSendHfpAudioConnected(hfpInstanceTaskData *instance);

/*! \brief Send the event to indicate HFP audio has disconnected.

    \param instance The HFP Instance.
    \param reason for disconnection
*/
void HfpProfile_EventSendHfpAudioDisconnected(hfpInstanceTaskData *instance, uint16 reason);

/*! \brief Send the event to indicate Call indicator update.

    \param instance The HFP Instance.
*/
void HfpProfile_EventSendHfpCallUpdate(hfpInstanceTaskData *instance, hfp_call_state previous_call_state);

/*! \brief Send the event to indicate an HFP ring.

    \param instance The HFP Instance.
*/
void HfpProfile_EventSendHfpRingInd(hfpInstanceTaskData *instance);

/*! \brief Send the event to indicate the speaker gain.

    \param instance The HFP Instance.
*/
void HfpProfile_EventSendSpeakerGainInd(hfpInstanceTaskData *instance, uint8 gain);

/*! \brief Send the event to indicate the microphone gain.

    \param instance The HFP Instance.
*/
void HfpProfile_EventSendMicGainInd(hfpInstanceTaskData *instance, uint8 gain);

/*! \brief Send the event to indicate an HFP inband ring update.

    \param instance The HFP Instance.
*/
void HfpProfile_EventSendHfpInbandRingInd(hfpInstanceTaskData *instance);

/*! \brief Send the event to indicate an HFP voice recognition update.

    \param instance The HFP Instance.
*/
void HfpProfile_EventSendHfpVoiceRecognitionInd(hfpInstanceTaskData *instance);

/*! \brief Send the event to indicate the result of sending an HFP AT command.

    \param instance The HFP Instance.
*/
void HfpProfile_EventSendHfpAtCommandComplete(hfpInstanceTaskData *instance, bool success);

/*! \brief Send the event to indicate the receive of Unknown AT command.

    \param instance The HFP Instance.
    \param data pointer to the AT command recieved
    \param data_size the size of the AT command.
*/
void HfpProfile_EventSendHfpUnknownAtCommandReceived(hfpInstanceTaskData *instance, uint8* data, uint16 data_size);

/*! @} */

#endif /* A2DP_PROFILE_EVENT_SEND_H_ */